This invention relates to a technique for dynamically allocating storage areas to virtual logical volumes used by a higher-level device.
There is for example the technology disclosed by Japanese Patent Laid-open No. 2005-31929. According to this technology, a management server, connected to a plurality of servers and a storage device, manages a physical storage area of the storage device, used by the plurality of servers, as a virtual area (storage pool), and, in response to a command received from a server to allocate an area equal to or greater than the unallocated area, releases at least a portion of the area allocated to another server, and allocates the area to the server issuing the area allocation command.
However, virtualization systems, which provide virtual logical volumes (virtual volumes) to higher-level devices (for example, to host computers or to storage systems), are well-known. Virtualization systems may be storage systems, or may be server machines, or may be switching devices which configure networks (for example a SAN (Storage Area Network)).
FIG. 3 shows an example of a method by which a virtualization system allocates an actual storage area (hereafter called an actual area) to a virtual volume.
In other words, an actual area, which is a unit of allocation, is an area in a logical volume with an actual presence (hereafter an “actual volume”). An actual volume is a logical storage device provided with storage space from one or a plurality of physical storage devices (for example, hard disk drives or flash memory). One or a plurality of actual volumes are managed as a pool. When an operation occurs to write to a certain address in a virtual volume (hereafter a “virtual address”), the virtualization system selects an unallocated actual area from among the plurality of actual areas in the pool, allocates the selected actual area to an area containing the certain address (hereafter a “virtual area”), and writes the data for writing to the certain virtual address to the allocated actual area (for example, the storage capacity of the virtual area and the storage capacity of the actual area may be the same). When an operation occurs to write to the virtual area containing the certain virtual address (to a prescribed virtual address range), data is written to the allocated actual area, and when an operation occurs to write to a virtual area different from the virtual area, another unallocated actual area is allocated to the other virtual area, and data is written to the other actual area.
When using this method, the following problem occurs. That is, in order for the higher-level device to use a virtual volume, the virtual volume must be formatted (initialized). In a file system format used by a virtual volume, management information of small size (meta-data; specifically, for example, superblocks, i-nodes, and similar) is written to the virtual volume, and the virtual address to which the management information is written is shifted at regular intervals. In this case, if actual areas are allocated using the above method, actual areas can be allocated appropriately as in the example of FIG. 4A, but in each of the allocated actual areas, there is the problem that the size of the unallocated area becomes large. That is, the problem of poor efficiency of use of storage capacity arises.